1. Field of the Invention
This invention relates to a data transfer method including fork emulation in TCP/IP socket communication, and particularly to a data transfer method by which a child process created by a fork takes over the network connection between the parent process and client in a data processing system which performs data transfer between user-spaces without any operating system involvement.
2. Description of Related Art
In a distributed data processing system of the server-client model, TCP/IP socket communication is very common and there exist enormous software assets. FIG. 2 shows an example of a data processing system of the server-client model. In this example, a host 210 and a host 260 are connected by a communication line 30 and a server application 211 and a client application 261 communicate with each other via sockets.
In the conventional socket communication method, when a parent process 212 in the server application 211 receives a request from a process 262 in the client application 261, the parent process 212 creates a child process 213 through UNIX's fork function and the child process 213 deals with the request from the process 262. In socket communication, however, data to be communicated is once buffered in buffers inside the space of an operating system (a buffer 231 in an OS 230 and a buffer 281 in an OS 280). This has been a bottleneck in improving the throughput.
As a solution to this problem, next-generation high speed IO methods, such as VIA (Virtual Interface Architecture) which enables direct data transfer between user-spaces without the need for copying into the OS space, have been proposed in recent years. One example of such known art is “High-Performance Local Area Communication With Fast Socket” (Proceedings of the USENIX, 1997) by Steven H. Rodrigues et al. According to this art, connection of the server and client by a high speed network permits performance improvement and also emulation of some of the socket communication functions by the API of the high speed network enables an effective use of existing software assets. Regarding this emulation, it is well known that the original function can be replaced by a new function through UNIX's rename capability.